home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- #include <malloc.h>
- #include <stdarg.h>
- #include "adslib.h"
- #include "adsdlg.h"
- //
- //
- #undef X
- #undef Y
- #undef Z
- #undef T
- #define SymExp MemoryCell *
- #define Dummy MemoryCell *
- #define StrExp char *
-
- //
- typedef enum {
- False,
- True
- } Boolean;
-
- typedef enum {
- cCons,
- cNumber,
- cReal,
- cString,
- cSymbol,
- cFunction,
- cOpen,
- cClose,
- cDot,
- cFile,
- cSubr,
- cExSubr,
- cPickSet,
- cEName,
- cUnknown,
- cReserved
- } CellTypes;
-
-
- typedef struct MemoryCell {
- struct {
- unsigned ID : 4;
- unsigned Mark : 1;
- unsigned Point2 : 9;
- unsigned Usable : 1;
- } Flag;
- struct SymExp Next;
- struct SymExp Prev;
- CellTypes CellType;
- union {
- struct {
- StrExp Name;
- } Symbol;
- long IntValue;
- ads_real RealValue;
- StrExp StrValue;
- struct {
- struct SymExp Car;
- struct SymExp Cdr;
- } Cons;
- struct {
- int ArgC;
- struct SymExp (*Func)();
- } Func;
- FILE *File;
- ads_name EName;
- ads_name PickSet;
- } Cell;
- } MemoryCell;
- //
- //
- typedef struct SelectionSetList {
- ads_name SelectionSet;
- int Flag;
- struct SelectionSetList *Next;
- } SelectionSetList;
- //
- typedef struct FileList {
- FILE *File;
- int Flag;
- struct FileList *Next;
- } FileList;
- //
- //
- //░░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░
- //
- #define MaxSymbol 2003
- #define HStep 13
-
- typedef struct HashList {
- SymExp Value;
- Boolean Repr;
- struct HashList *Next;
- } HashList_;
-
- typedef struct {
- StrExp Name;
- struct HashList *Top;
- Boolean Local;
- } HashTable;
-
- #define ClearError ERROR = False
- #define ErrorTest if (ERROR) return (NULL)
- Boolean GetBoolean (SymExp);
- Boolean IsFunction (SymExp);
- Boolean IsPoint (SymExp);
- FILE *GetFile (SymExp);
- StrExp GetName (SymExp);
- StrExp GetString (SymExp);
- SymExp (*GetFunction ())();
- SymExp ADS_Acad_colordlg (SymExp, SymExp, ...);
- SymExp ADS_Acad_helpdlg (SymExp, SymExp, ...);
- SymExp ADS_Acad_strsort (SymExp, SymExp);
- SymExp ADS_Action_tile (SymExp, SymExp,...);
- SymExp ADS_Add_list (SymExp,...);
- SymExp ADS_Ads (SymExp);
- SymExp ADS_Alert (SymExp, SymExp);
- SymExp ADS_Angle (SymExp, SymExp, SymExp);
- SymExp ADS_Angtof (SymExp, SymExp,...);
- SymExp ADS_Angtos (SymExp, SymExp,...);
- SymExp ADS_Client_data_tile (SymExp, SymExp, ...);
- SymExp ADS_Command (SymExp,...);
- SymExp ADS_Cvunit (SymExp, SymExp, SymExp, SymExp);
- SymExp ADS_Dimx_tile (SymExp, ...);
- SymExp ADS_Dimy_tile (SymExp, ...);
- SymExp ADS_Distance (SymExp, SymExp, SymExp);
- SymExp ADS_Distof (SymExp,...);
- SymExp ADS_Done_dialog (SymExp,...);
- SymExp ADS_End_image (SymExp);
- SymExp ADS_End_list (SymExp);
- SymExp ADS_Entdel (SymExp,...);
- SymExp ADS_Entget (SymExp, SymExp, ...);
- SymExp ADS_Entlast (SymExp);
- SymExp ADS_Entmake (SymExp,...);
- SymExp ADS_Entmod (SymExp,...);
- SymExp ADS_Entnext (SymExp,...);
- SymExp ADS_Entsel (SymExp,...);
- SymExp ADS_Entupd (SymExp,...);
- SymExp ADS_Fill_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
- SymExp ADS_Findfile (SymExp, SymExp);
- SymExp ADS_Get_attr (SymExp, SymExp,...);
- SymExp ADS_Get_tile (SymExp,...);
- SymExp ADS_Getangle (SymExp,...);
- SymExp ADS_Getcorner (SymExp, SymExp,...);
- SymExp ADS_Getdist (SymExp,...);
- SymExp ADS_Getfiled (SymExp, SymExp, SymExp, SymExp, SymExp);
- SymExp ADS_Getint (SymExp,...);
- SymExp ADS_Getkword (SymExp,...);
- SymExp ADS_Getorient (SymExp,...);
- SymExp ADS_Getpoint (SymExp,...);
- SymExp ADS_Getreal (SymExp,...);
- SymExp ADS_Getstring (SymExp,...);
- SymExp ADS_Getvar (SymExp,...);
- SymExp ADS_Graphscr (SymExp);
- SymExp ADS_Grclear (SymExp);
- SymExp ADS_Grdraw (SymExp, SymExp, SymExp, SymExp, ...);
- SymExp ADS_Grread (SymExp, ...);
- SymExp ADS_Grtext (SymExp, ...);
- SymExp ADS_Grvecs (SymExp, SymExp, ...);
- SymExp ADS_Handent (SymExp, SymExp);
- SymExp ADS_Initget (SymExp,...);
- SymExp ADS_Inters (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
- SymExp ADS_Load_dialog (SymExp,...);
- SymExp ADS_Menucmd (SymExp, SymExp);
- SymExp ADS_Mode_tile (SymExp, SymExp,...);
- SymExp ADS_Nentsel (SymExp, ...);
- SymExp ADS_Nentselp (SymExp, ...);
- SymExp ADS_New_dialog (SymExp, SymExp, SymExp,...);
- SymExp ADS_Osnap (SymExp, SymExp, SymExp);
- SymExp ADS_Polar (SymExp, SymExp, SymExp, SymExp);
- SymExp ADS_Prompt (SymExp, SymExp);
- SymExp ADS_Redraw (SymExp, ...);
- SymExp ADS_Regapp (SymExp, SymExp);
- SymExp ADS_Rtos (SymExp, SymExp,...);
- SymExp ADS_Set_tile (SymExp, SymExp,...);
- SymExp ADS_Setvar (SymExp, SymExp, SymExp);
- SymExp ADS_Slide_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
- SymExp ADS_Ssadd (SymExp,...);
- SymExp ADS_Ssdel (SymExp, SymExp, SymExp);
- SymExp ADS_Ssget (SymExp,...);
- SymExp ADS_Sslength (SymExp, SymExp);
- SymExp ADS_Ssmemb (SymExp, SymExp, SymExp);
- SymExp ADS_Ssname (SymExp, SymExp, SymExp);
- SymExp ADS_Start_dialog (SymExp);
- SymExp ADS_Start_image (SymExp, ...);
- SymExp ADS_Start_list (SymExp, SymExp,...);
- SymExp ADS_Tablet (SymExp, SymExp, ...);
- SymExp ADS_Tblnext (SymExp, SymExp, ...);
- SymExp ADS_Tblsearch (SymExp, SymExp, SymExp, ...);
- SymExp ADS_Term_dialog (SymExp);
- SymExp ADS_Textbox (SymExp, SymExp);
- SymExp ADS_Textscr (SymExp);
- SymExp ADS_Trans (SymExp, SymExp, SymExp, SymExp, ...);
- SymExp ADS_Unload_dialog (SymExp,...);
- SymExp ADS_Vector_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
- SymExp ADS_Vports (SymExp);
- SymExp ADS_Wcmatch (SymExp, SymExp,...);
- SymExp ADS_Xdroom (SymExp, ...);
- SymExp ADS_Xdsize (SymExp, ...);
- SymExp ADS_Xload (SymExp, SymExp,...);
- SymExp ADS_Xunload (SymExp, SymExp,...);
- SymExp Copy (SymExp);
- SymExp GetLocal (HashTable [], int);
- SymExp GetSymbol (HashTable [], StrExp);
- SymExp LSP_Abs (SymExp, Dummy);
- SymExp LSP_Alloc (SymExp, Dummy);
- SymExp LSP_And (SymExp, ...);
- SymExp LSP_Append (SymExp, ...);
- SymExp LSP_Ascii (SymExp, Dummy);
- SymExp LSP_Assoc (SymExp, SymExp, Dummy);
- SymExp LSP_Atan (SymExp,...);
- SymExp LSP_Atof (SymExp, Dummy);
- SymExp LSP_Atoi (SymExp, Dummy);
- SymExp LSP_Atom (SymExp, Dummy);
- SymExp LSP_AtomsFamily (SymExp, SymExp, ...);
- SymExp LSP_BitNot (SymExp, Dummy);
- SymExp LSP_Boole (SymExp, SymExp, SymExp,...);
- SymExp LSP_Boundp (SymExp, Dummy);
- SymExp LSP_C_r (SymExp, StrExp, Dummy);
- SymExp LSP_Car (SymExp, Dummy);
- SymExp LSP_Cdr (SymExp, Dummy);
- SymExp LSP_Chr (SymExp, Dummy);
- SymExp LSP_Close (SymExp, SymExp);
- SymExp LSP_Cons (SymExp, SymExp, Dummy);
- SymExp LSP_Cos (SymExp, Dummy);
- SymExp LSP_Divide (SymExp,...);
- SymExp LSP_Eq (SymExp, SymExp, SymExp);
- SymExp LSP_Equal (SymExp, SymExp, SymExp,...);
- SymExp LSP_Eval (SymExp, SymExp);
- SymExp LSP_Exit (Dummy);
- SymExp LSP_Exp (SymExp, SymExp);
- SymExp LSP_Expand (SymExp, Dummy);
- SymExp LSP_Expt (SymExp, SymExp, SymExp);
- SymExp LSP_Fix (SymExp, Dummy);
- SymExp LSP_Float (SymExp, Dummy);
- SymExp LSP_Gc (Dummy);
- SymExp LSP_Gcd (SymExp, SymExp, Dummy);
- SymExp LSP_Getenv (SymExp,...);
- SymExp LSP_Invoke (StrExp, SymExp, ...);
- SymExp LSP_Itoa (SymExp, Dummy);
- SymExp LSP_Last (SymExp, Dummy);
- SymExp LSP_Length (SymExp, Dummy);
- SymExp LSP_LessEqual (SymExp, SymExp, ...);
- SymExp LSP_LessThan (SymExp, SymExp, ...);
- SymExp LSP_List (SymExp,...);
- SymExp LSP_Listp (SymExp, Dummy);
- SymExp LSP_Load (SymExp, SymExp, ...);
- SymExp LSP_Log (SymExp, SymExp);
- SymExp LSP_Logand (SymExp, SymExp, ...);
- SymExp LSP_Logior (SymExp, SymExp, ...);
- SymExp LSP_Lsh (SymExp, SymExp, Dummy);
- SymExp LSP_Max (SymExp,...);
- SymExp LSP_Mem (SymExp,...);
- SymExp LSP_Member (SymExp, SymExp, Dummy);
- SymExp LSP_Min (SymExp,...);
- SymExp LSP_Minus (SymExp,...);
- SymExp LSP_Minusp (SymExp, Dummy);
- SymExp LSP_MoreEqual (SymExp, SymExp, ...);
- SymExp LSP_MoreThan (SymExp, SymExp, ...);
- SymExp LSP_Not (SymExp, Dummy);
- SymExp LSP_Nth (SymExp, SymExp, Dummy);
- SymExp LSP_Null (SymExp, Dummy);
- SymExp LSP_NumEq (SymExp, SymExp, ...);
- SymExp LSP_NumNotEq (SymExp, SymExp, ...);
- SymExp LSP_Numberp (SymExp, Dummy);
- SymExp LSP_OneMinus (SymExp, Dummy);
- SymExp LSP_OnePlus (SymExp, Dummy);
- SymExp LSP_Open (SymExp, SymExp, SymExp);
- SymExp LSP_Or (SymExp, ...);
- SymExp LSP_Plus (SymExp,...);
- SymExp LSP_Prin1 (SymExp, ...);
- SymExp LSP_Princ (SymExp, ...);
- SymExp LSP_Print (SymExp, ...);
- SymExp LSP_Quit (Dummy);
- SymExp LSP_Read (SymExp, Dummy);
- SymExp LSP_ReadChar (SymExp, ...);
- SymExp LSP_ReadLine (SymExp, ...);
- SymExp LSP_Rem (SymExp, SymExp, ...);
- SymExp LSP_Reverse (SymExp, SymExp);
- SymExp LSP_Sin (SymExp, Dummy);
- SymExp LSP_Sqrt (SymExp, SymExp);
- SymExp LSP_StrCase (SymExp ,...);
- SymExp LSP_StrCat (SymExp, ...);
- SymExp LSP_StrLen (SymExp, ...);
- SymExp LSP_SubStr (SymExp, SymExp, ...);
- SymExp LSP_Subst (SymExp, SymExp, SymExp, Dummy);
- SymExp LSP_Terpri (Dummy);
- SymExp LSP_Times (SymExp,...);
- SymExp LSP_Trace (SymExp, ...);
- SymExp LSP_Type (SymExp, Dummy);
- SymExp LSP_Untrace (SymExp, ...);
- SymExp LSP_Ver (Dummy);
- SymExp LSP_Vmon (Dummy);
- SymExp LSP_WriteChar (SymExp, ...);
- SymExp LSP_WriteLine (SymExp, ...);
- SymExp LSP_Zerop (SymExp, Dummy);
- SymExp MakeEName (ads_name);
- SymExp MakeFile (FILE *);
- SymExp MakeFunction (SymExp (*F)(), int);
- SymExp MakeMatrix (ads_matrix);
- SymExp MakeMem (CellTypes, int);
- SymExp MakeNumber (long);
- SymExp MakePickSet (ads_name);
- SymExp MakePoint (ads_point);
- SymExp MakeReal (ads_real);
- SymExp MakeString (StrExp);
- SymExp MakeSymbol (StrExp);
- SymExp rb2Sym (struct resbuf **);
- ads_real GetReal (SymExp);
- int HIndex (HashTable [], StrExp);
- int InsGlobal (HashTable [], StrExp, SymExp);
- int InsLocal (HashTable [], StrExp, SymExp);
- int returnADS (SymExp);
- long GetNumber (SymExp);
- void DelLocal (HashTable [], int);
- void GetEName (SymExp, ads_name);
- void GetMatrix (SymExp, ads_matrix);
- void GetPickSet (SymExp, ads_name);
- void GetPoint (SymExp, ads_point);
- void InsTmpLocal (HashTable [], int);
- void InsertStack (SymExp S[], int);
- void KillMem (void);
- void Lisp2C_Exit ();
- void Lisp2C_Init (int, char *[]);
- void MarkGlobal (HashTable [], int);
- void PopObjList (void);
- void PrintTable (HashTable []);
- void PushObjList (void);
- void PutLocal (HashTable [], int, SymExp);
- void PutSymbol (HashTable [], StrExp, SymExp);
- void RemoveStack ();
- void WriteError (StrExp);
- void check_resbuf (struct resbuf **);
- void BREAKPT (int, int);
- void debugENTER (StrExp);
- void debugEXIT ();
- void debugRESULT (SymExp);
- //
- // Error messages -----------------------------------------------------------
- //
- #define errBadArgType "Bad argument value."
- #define errBadComment "Bad inline comment."
- #define errBadDotPair "Bad dotted pair."
- #define errBadMemory "Bad memory type."
- #define errHashFull "Hash table full."
- #define errIlegalValue "Ilegal value."
- #define errIncorrArgs "Incorrect number of arguments to a function."
- #define errLoadFailed "Load failed."
- #define errNilFunction "NIL function."
- #define errNoMemory "Cannot allocate memory."
- #define errNotSymbol "Not a symbol."
- #define errParentheses "Unbalanced parentheses in read."
- #define errQuitExit "Quit/Exit abort."
- #define errTooManyArgs "Eval can only handle < 32 args in user functions."
- #define errUserBreak "User break."
- #define errXload "Xload failed."
- #define errXunload "Xunload failed."
-
- #define warnBadValue "Cannot access symbol."
- //
- //
- //░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
- //░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░
- //░░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░
- //░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░
- //░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
-